/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DigaFoil;

import BD.Usuario;
import GUI.Gui;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;

/**
 *
 * @author ARMGARCES
 */
public class Procesos{
    /**
    * 
    */
    public void actualizarSesion(){
        
        Thread hilo = new Thread(){
            /**
             * 
             */
            @Override
            public void run() {
            try {
                boolean continuar = true;
                while(continuar){
                    Usuario user = null;
                sleep(5000);
                Usuario _user = Controlador.getInstance().getUser();
                if(_user != null && _user.getActivo()){
                    try{
                    EntityManagerFactory factory = Persistence.createEntityManagerFactory(Controlador.PERSISTENCE_UNIT_NAME);
                    EntityManager em = factory.createEntityManager();

                    //use entity manager to retrieve named query
                    Query findUsuario = em.createNamedQuery("Usuario.findByIdUsuario");
                    //set dynamic data for query
                    findUsuario.setParameter("idUsuario", _user.getIdUsuario());

                    //execute query and get results
                    user = (Usuario) findUsuario.getSingleResult();
                    em.refresh(user);
                    em.close();
                    
                    if(!user.getActivo()){
                        Controlador.getInstance().setUser(user);
                        Gui.getInstance().desactivarVentana();
                        Gui.getInstance().updateSesion();
                        Log.getInstance().sesionDeshabilitada();
                    
                        String mnsj  = "El Usuario ha sido Deshabilitado, por favor contacte a su superior!";
                        String title = "Sesion Deshabilitada";
                        JOptionPane.showMessageDialog(Gui.getInstance().getPantalla(),mnsj,title, JOptionPane.ERROR_MESSAGE);
                    }
                    }catch(Exception e){
                        System.out.println("e = " + e);
                    }
                }else{
                    continuar = false;
                }
                } // Fin WHILE
            } catch (Exception ex) {
                System.out.println("ex = " + ex);
            }
                
            } //Fin RUN    
        };
        
        hilo.start();
    }
    
}
